
#ifndef GAMESTATE_H
#define GAMESTATE_H

#include <string>

class GameState
{
protected:
    float m_fTimeInState;
    bool m_bLoaded;
    
	virtual void loadContent() = 0;
	virtual void unloadContent() = 0;

public:
	void load()
	{
		if(m_bLoaded)
			return;
		m_bLoaded = true;
		
		loadContent();
	};
	
	void unload()
	{
		if(!m_bLoaded)
			return;
		m_bLoaded = false;
		
		unloadContent();
	};

	virtual void enter(){};
    virtual void activated(){};
	virtual void update(float dt){};
	virtual void updatePaused(float dt){};
	virtual void render(){};
	virtual void exit(){};
    
    virtual bool canPause(){return false;}
};

#endif
